#coding=utf-8
'''
1 定义一个方法get_fundoc(func),func参数为任意一个函数对象，返回该函数对象的描述文档，如果该函数没有描述文档，则返回"not found"
'''
def func():
    '''
    this is doc
    :return:
    '''
    pass

def func2():
    pass

def get_doc(fun_name):
    try:
        if fun_name.__doc__:
            return fun_name.__doc__
        else:
            return "not found"
    except:
       return  "没有找到此方法"

print get_doc(func)



'''
2 定义一个方法get_cjsum(),求1-100范围内的所有整数的平方和。返回结果为整数类型。

'''

def get_cjsum():
    sum = 0
    for i in xrange(1,101):
         sum += i * i
    return sum
print get_cjsum()


'''
3 定义一个方法list_info(list), 参数list为列表对象，怎么保证在函数里对列表list进行一些相关的操作，不会影响到原来列表的元素值，
a = [1,2,3]

def list_info(list):
  要对list进行相关操作，不能直接只写一句return[1,2,5]，这样就没意义了

print list_info(a):返回结果：[1,2,5]

print a 输出结果：[1,2,3]

写出函数体内的操作代码。
'''


def list_info(list):
     c =[]
     for i in list:
         c.append(i)
     c[2] = 5
     return c
global b
b = [1,2,3]
print list_info(b)
print b


'''

4 定义一个方法get_funcname(func),func参数为任意一个函数对象，需要判断函数是否可以调用，如果可以调用则返回该函数名(
类型为str)，否则返回 “fun is not function"。

try 和 except当你程序出现异常就使用这个函数
'''


def one(func1,func2):
    return func1 + func2
two = 2
def getfuncname(func):
    try:
        if func.__code__.co_filename:
            return func.__code__.co_varnames
    except:
        return "fun is not functiuon"
print getfuncname(two)